package com.demo.swagger;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
 * Swagger2 培养类
 * 在与spring boot集成时，放在Application.java文件同包下
 * @Configuration 用于启动这个类地配置
 * @EnableSwagger2 用来启动Swagger2
 */
@Configuration
@EnableSwagger2
public class Swagger2 {

    /**
     * 创建api应用
     * apiInfo（）增加API相关信息
     * 通过select函数返回一个ApiSelectorBuilder实例，用来控制将哪些接口保罗给swagger管理
     * 本例采用扫描指定包路径来ding'yi要建立地api地目录
     * @return
     */
    @Bean
    public Docket CreateRestApi(){
        return  new Docket(DocumentationType.SWAGGER_2).
                apiInfo(apiInfo()).
                select().
                apis(RequestHandlerSelectors.basePackage("com.demo.swagger.controller")).
                paths(PathSelectors.any()).
                build();
    }

    /**
     * 创建api的基本信息，这些信息会展示在文档页面
     * 访问地址：http://项目实际地址/swagger-ui.html
     * @return
     */
    private ApiInfo apiInfo(){
            return new ApiInfoBuilder().
                    title("在spring boot中使用swagger2 来构建RESTFUL APIS").
                    description("更多关注com.gz").termsOfServiceUrl("http://www.baidu.com").
                    contact("sunf").version("1.0").build();
    }
}
